import { copy } from '@/utils';
import { getFileList } from '@/j_api';

export default {
  // 模块名称
  namespace: 'file',
  // 定义数据
  state: {
    filelist: [],
    // 总数量
    total: 0,
    lodingboolean: true,
  },
  // 修改state中的值
  reducers: {
    CHANGE_LIST(state, { payload: { data, total, statusCode } }) {
      // state 代表 state中的数据
      // payload 代表 dispatch中的数据
      const newState = copy(state);
      newState.filelist = data;
      newState.total = total;
      if (statusCode === 200) {
        newState.lodingboolean = false;
      }
      return newState;
    },
  },
  // // 处理异步任务
  effects: {
    *INIT({ pageInfo }, { put }) {
      // yield 等待后面的任务
      const { data, statusCode } = yield getFileList(pageInfo);
      // 执行reducers中的函数用来修改数据
      // put 相当于页面中的dispatch
      yield put({
        type: 'CHANGE_LIST',
        payload: {
          data: data[0],
          total: data[1],
          statusCode,
        },
      });
    },
  },
  // // 监听
  // subscriptions: {
  //     setup({ dispatch, history }) {
  //         return history.listen(({ pathname, query }) => {
  //             if (pathname === '/users') {
  //                 dispatch({ type: 'fetch', payload: query });
  //             }
  //         });
  //     },
  // },
};
